jetcrab\parser\expressions/
assignment.rs

1use crate::ast::{AssignmentExpression, Node};
2use crate::parser::error::ParseResult;
3use crate::parser::Parser;
4
5impl Parser {
6    pub fn parse_assignment_expression(&mut self) -> ParseResult<Node> {
7        let mut left = self.parse_logical_or_expression()?;
8
9        if self.is_assignment_operator() {
10            let operator = self.current_token_string();
11            self.advance();
12            let right = Box::new(self.parse_assignment_expression()?);
13
14            let span = self.create_span_from_tokens();
15            left = Node::AssignmentExpression(AssignmentExpression {
16                left: Box::new(left),
17                operator,
18                right,
19                span: Some(span),
20            });
21        }
22
23        Ok(left)
24    }
25}